<?php

namespace app\admin\job;

use think\facade\Log;
use think\queue\Job;

class TestJob
{
    public function fire(Job $job, $data)
    {

        //....这里执行具体的任务
        if ($this->doJob($data)){
            $job->delete();
            dump("任务删除");
        }


        if ($job->attempts() > 3) {
            //通过这个方法可以检查这个任务已经重试了几次了
            $job->delete();
            dump("任务超时");
        }


        //如果任务执行成功后 记得删除任务，不然这个任务会重复执行，直到达到最大重试次数后失败后，执行failed方法
//        $job->delete();

        // 也可以重新发布这个任务
//        $job->release(); //$delay为延迟时间

    }

    public function failed($data)
    {

        // ...任务达到最大重试次数后，失败了
    }

    /**
     * 根据消息中的数据进行实际的业务处理...
     * @param array $data
     * @return bool
     */
    private function doJob(array $data)
    {
//        Log::error(time() . "---" . $data['text'] ?? 'egfggegge');
        dump(date('Y-m-d H:i:s') . "---" . $data['text'] ?? 'oo');

        return true;

    }
}
